package cn.starlightsoftware.sherly.service.permission;

import cn.starlightsoftware.sherly.controller.admin.permission.vo.RolePageReqVO;
import cn.starlightsoftware.sherly.controller.admin.permission.vo.RolePermissionUpdateReqVO;
import cn.starlightsoftware.sherly.controller.admin.permission.vo.RoleSaveReqVO;
import cn.starlightsoftware.sherly.model.PageResult;
import cn.starlightsoftware.sherly.db.model.permission.RoleDO;
import cn.starlightsoftware.sherly.db.model.permission.RolePermissionDO;

import javax.validation.Valid;
import java.util.List;

/**
 * @author 谷子毅
 * @date 2024/4/27
 */
public interface RoleService {

    /**
     * 角色分页
     * @param reqVO
     * @return
     */
    PageResult<RoleDO> page(RolePageReqVO reqVO);

    /**
     * 角色新增
     * @param reqVO
     */
    void save(@Valid RoleSaveReqVO reqVO);

    /**
     * 角色修改
     * @param reqVO
     */
    void update(@Valid RoleSaveReqVO reqVO);

    /**
     * 角色详情
     * @param roleId
     * @return
     */
    RoleDO detail(String roleId);

    /**
     * 角色删除
     * @param roleId
     */
    void delete(String roleId);

    /**
     * 角色权限列表
     * @param roleId
     * @return
     */
    List<RolePermissionDO> rolePermissionList(String roleId);

    /**
     * 角色权限修改
     * @param reqVO
     */
    void rolePermissionUpdate(RolePermissionUpdateReqVO reqVO);

    /**
     * 角色列表
     * @return
     */
    List<RoleDO> list();
}
